/*
 * CalculatorAdvancedView.java
 */

package calculatoradvanced;

import CalculatorActions.Controller;
import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
//import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;

/**
 * The application's main frame.
 */
public class CalculatorAdvancedView extends FrameView {

    public CalculatorAdvancedView(SingleFrameApplication app) {
        super(app);
        initComponents();
        //Al encender la calculadora se establece como predeterminado el formato numerico Decimal.
        rBDecimal.setSelected(true);
        rBDecimal.setEnabled(false);
        // status bar initialization - message timeout, idle icon and busy animation, etc
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
        messageTimer = new Timer(messageTimeout, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statusMessageLabel.setText("");
            }
        });
        messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++) {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        });
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName)) {
                    if (!busyIconTimer.isRunning()) {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                } else if ("done".equals(propertyName)) {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                } else if ("message".equals(propertyName)) {
                    String text = (String)(evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                } else if ("progress".equals(propertyName)) {
                    int value = (Integer)(evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });
    }

    Controller controller= new Controller();

    //Metodo accionado cuando se presiona una tecla numerica u operacional.
    @Action
    public void keyPressed(java.awt.event.ActionEvent evt) {
        controller.KeyPressed(this,evt);
    }

    //Metodo accionado cuando se presiona la tecla CE
    @Action
    public void keyCEPressed() {
        controller.keyCEPressed(this);
    }

    //Metodo accionado cuando se presiona la tecla backspace
    @Action
    public void keyBackPressed() {
        controller.keyBackPressed(this);
    }

    //Metodo accionado cuando se presiona la tecla C.
    @Action
    public void keyCPressed() {
        controller.keyCPressed(this);
    }

    //Metodo accionado cuando se presiona la tecla =.
    @Action
    public void keyResultPressed(java.awt.event.ActionEvent evt) {
        controller.KeyResultPressed(this);
    }

    //Metodo accionado cuando se decide cambiar de formato numerico.
    @Action
    public void cambioNumero(java.awt.event.ActionEvent evt) {
        controller.cambioTipoNumerico(this,evt);
    }

    //Metodo accionado cuando se presiona en el menu AboutBox.
    @Action
    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = CalculatorAdvancedApp.getApplication().getMainFrame();
            aboutBox = new CalculatorAdvancedAboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        CalculatorAdvancedApp.getApplication().show(aboutBox);
    }

    //Metodo que devuelve el display de la calculadora.
    public javax.swing.JTextPane Display(){
        return this.display;
    }

    //Metodo que devuelve el JRadioButton decimal de la calculadora.
    public javax.swing.JRadioButton Decimal(){
        return this.rBDecimal;
    }

    //Metodo que devuelve el JRadioButton binario de la calculadora.
    public javax.swing.JRadioButton Binario(){
        return this.rBBinario;
    }

    //Metodo que devuelve el JRadioButton Hexadecimal de la calculadora.
    public javax.swing.JRadioButton Hexadecimal(){
        return this.rBHexadecimal;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        display = new javax.swing.JTextPane();
        rBDecimal = new javax.swing.JRadioButton();
        rBBinario = new javax.swing.JRadioButton();
        rBHexadecimal = new javax.swing.JRadioButton();
        key7 = new javax.swing.JButton();
        key8 = new javax.swing.JButton();
        key9 = new javax.swing.JButton();
        key1 = new javax.swing.JButton();
        key2 = new javax.swing.JButton();
        key3 = new javax.swing.JButton();
        key4 = new javax.swing.JButton();
        key5 = new javax.swing.JButton();
        key6 = new javax.swing.JButton();
        keyX = new javax.swing.JButton();
        keyDiv = new javax.swing.JButton();
        keyRest = new javax.swing.JButton();
        key0 = new javax.swing.JButton();
        keyPoint = new javax.swing.JButton();
        keyPlus = new javax.swing.JButton();
        keyCE = new javax.swing.JButton();
        keyC = new javax.swing.JButton();
        keyBack = new javax.swing.JButton();
        keySame = new javax.swing.JButton();
        menuBar = new javax.swing.JMenuBar();
        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
        javax.swing.JMenu helpMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
        statusPanel = new javax.swing.JPanel();
        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
        statusMessageLabel = new javax.swing.JLabel();
        statusAnimationLabel = new javax.swing.JLabel();
        progressBar = new javax.swing.JProgressBar();

        mainPanel.setName("mainPanel"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(calculatoradvanced.CalculatorAdvancedApp.class).getContext().getResourceMap(CalculatorAdvancedView.class);
        display.setBackground(resourceMap.getColor("display.background")); // NOI18N
        display.setFont(resourceMap.getFont("display.font")); // NOI18N
        display.setForeground(resourceMap.getColor("display.foreground")); // NOI18N
        display.setText(resourceMap.getString("display.text")); // NOI18N
        display.setName("display"); // NOI18N
        jScrollPane1.setViewportView(display);

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(calculatoradvanced.CalculatorAdvancedApp.class).getContext().getActionMap(CalculatorAdvancedView.class, this);
        rBDecimal.setAction(actionMap.get("cambioNumero")); // NOI18N
        rBDecimal.setText(resourceMap.getString("rBDecimal.text")); // NOI18N
        rBDecimal.setName("rBDecimal"); // NOI18N

        rBBinario.setAction(actionMap.get("cambioNumero")); // NOI18N
        rBBinario.setText(resourceMap.getString("rBBinario.text")); // NOI18N
        rBBinario.setName("rBBinario"); // NOI18N

        rBHexadecimal.setAction(actionMap.get("cambioNumero")); // NOI18N
        rBHexadecimal.setText(resourceMap.getString("rBHexadecimal.text")); // NOI18N
        rBHexadecimal.setName("rBHexadecimal"); // NOI18N

        key7.setAction(actionMap.get("keyPressed")); // NOI18N
        key7.setText(resourceMap.getString("key7.text")); // NOI18N
        key7.setName("key7"); // NOI18N

        key8.setAction(actionMap.get("keyPressed")); // NOI18N
        key8.setText(resourceMap.getString("key8.text")); // NOI18N
        key8.setName("key8"); // NOI18N

        key9.setAction(actionMap.get("keyPressed")); // NOI18N
        key9.setText(resourceMap.getString("key9.text")); // NOI18N
        key9.setName("key9"); // NOI18N

        key1.setAction(actionMap.get("keyPressed")); // NOI18N
        key1.setText(resourceMap.getString("key1.text")); // NOI18N
        key1.setName("key1"); // NOI18N

        key2.setAction(actionMap.get("keyPressed")); // NOI18N
        key2.setText(resourceMap.getString("key2.text")); // NOI18N
        key2.setName("key2"); // NOI18N

        key3.setAction(actionMap.get("keyPressed")); // NOI18N
        key3.setText(resourceMap.getString("key3.text")); // NOI18N
        key3.setName("key3"); // NOI18N

        key4.setAction(actionMap.get("keyPressed")); // NOI18N
        key4.setText(resourceMap.getString("key4.text")); // NOI18N
        key4.setName("key4"); // NOI18N

        key5.setAction(actionMap.get("keyPressed")); // NOI18N
        key5.setText(resourceMap.getString("key5.text")); // NOI18N
        key5.setName("key5"); // NOI18N

        key6.setAction(actionMap.get("keyPressed")); // NOI18N
        key6.setText(resourceMap.getString("key6.text")); // NOI18N
        key6.setName("key6"); // NOI18N

        keyX.setAction(actionMap.get("keyPressed")); // NOI18N
        keyX.setText(resourceMap.getString("keyX.text")); // NOI18N
        keyX.setName("keyX"); // NOI18N

        keyDiv.setAction(actionMap.get("keyPressed")); // NOI18N
        keyDiv.setText(resourceMap.getString("keyDiv.text")); // NOI18N
        keyDiv.setName("keyDiv"); // NOI18N

        keyRest.setAction(actionMap.get("keyPressed")); // NOI18N
        keyRest.setText(resourceMap.getString("keyRest.text")); // NOI18N
        keyRest.setName("keyRest"); // NOI18N

        key0.setAction(actionMap.get("keyPressed")); // NOI18N
        key0.setText(resourceMap.getString("key0.text")); // NOI18N
        key0.setName("key0"); // NOI18N

        keyPoint.setAction(actionMap.get("keyPressed")); // NOI18N
        keyPoint.setText(resourceMap.getString("keyPoint.text")); // NOI18N
        keyPoint.setName("keyPoint"); // NOI18N

        keyPlus.setAction(actionMap.get("keyPressed")); // NOI18N
        keyPlus.setText(resourceMap.getString("keyPlus.text")); // NOI18N
        keyPlus.setName("keyPlus"); // NOI18N

        keyCE.setAction(actionMap.get("keyCEPressed")); // NOI18N
        keyCE.setText(resourceMap.getString("keyCE.text")); // NOI18N
        keyCE.setName("keyCE"); // NOI18N

        keyC.setAction(actionMap.get("keyCPressed")); // NOI18N
        keyC.setText(resourceMap.getString("keyC.text")); // NOI18N
        keyC.setName("keyC"); // NOI18N

        keyBack.setAction(actionMap.get("keyBackPressed")); // NOI18N
        keyBack.setText(resourceMap.getString("keyBack.text")); // NOI18N
        keyBack.setName("keyBack"); // NOI18N

        keySame.setAction(actionMap.get("keyResultPressed")); // NOI18N
        keySame.setText(resourceMap.getString("keySame.text")); // NOI18N
        keySame.setName("keySame"); // NOI18N

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(mainPanelLayout.createSequentialGroup()
                                .addComponent(rBDecimal)
                                .addGap(33, 33, 33)
                                .addComponent(rBBinario)
                                .addGap(12, 12, 12))
                            .addGroup(mainPanelLayout.createSequentialGroup()
                                .addComponent(key7)
                                .addGap(18, 18, 18)
                                .addComponent(key8)
                                .addGap(18, 18, 18)
                                .addComponent(key9)
                                .addGap(10, 10, 10))
                            .addGroup(mainPanelLayout.createSequentialGroup()
                                .addComponent(key4)
                                .addGap(18, 18, 18)
                                .addComponent(key5)
                                .addGap(18, 18, 18)
                                .addComponent(key6))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(mainPanelLayout.createSequentialGroup()
                                        .addComponent(key1)
                                        .addGap(18, 18, 18)
                                        .addComponent(key2)
                                        .addGap(18, 18, 18)
                                        .addComponent(key3))
                                    .addGroup(mainPanelLayout.createSequentialGroup()
                                        .addComponent(key0, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(keyPoint)))
                                .addGap(10, 10, 10)))
                        .addGap(14, 14, 14)
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(mainPanelLayout.createSequentialGroup()
                                .addComponent(rBHexadecimal)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 102, Short.MAX_VALUE))
                            .addGroup(mainPanelLayout.createSequentialGroup()
                                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(keyX, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(keyRest, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(keyPlus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addGap(25, 25, 25)
                                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                                        .addComponent(keySame, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(keyCE, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addComponent(keyC, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 121, Short.MAX_VALUE)
                                    .addGroup(mainPanelLayout.createSequentialGroup()
                                        .addComponent(keyDiv, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(keyBack, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE)))))))
                .addContainerGap())
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rBDecimal)
                    .addComponent(rBBinario)
                    .addComponent(rBHexadecimal))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(key7)
                            .addComponent(key8)
                            .addComponent(key9))
                        .addGap(18, 18, 18)
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(key4)
                            .addComponent(key5)
                            .addComponent(key6))
                        .addGap(18, 18, 18)
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(key1)
                            .addComponent(key2)
                            .addComponent(key3))
                        .addGap(18, 18, 18)
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(key0)
                            .addComponent(keyPoint)))
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(keyX)
                            .addComponent(keyBack)
                            .addComponent(keyDiv))
                        .addGap(18, 18, 18)
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(keyRest)
                            .addComponent(keyC))
                        .addGap(18, 18, 18)
                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(keySame, javax.swing.GroupLayout.DEFAULT_SIZE, 65, Short.MAX_VALUE)
                            .addComponent(keyCE, javax.swing.GroupLayout.DEFAULT_SIZE, 65, Short.MAX_VALUE)
                            .addComponent(keyPlus, javax.swing.GroupLayout.DEFAULT_SIZE, 65, Short.MAX_VALUE))))
                .addGap(89, 89, 89))
        );

        menuBar.setName("menuBar"); // NOI18N

        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
        fileMenu.setName("fileMenu"); // NOI18N

        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
        exitMenuItem.setName("exitMenuItem"); // NOI18N
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N
        helpMenu.setName("helpMenu"); // NOI18N

        aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
        aboutMenuItem.setName("aboutMenuItem"); // NOI18N
        helpMenu.add(aboutMenuItem);

        menuBar.add(helpMenu);

        statusPanel.setName("statusPanel"); // NOI18N

        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

        statusMessageLabel.setName("statusMessageLabel"); // NOI18N

        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

        progressBar.setName("progressBar"); // NOI18N

        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
        statusPanel.setLayout(statusPanelLayout);
        statusPanelLayout.setHorizontalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 374, Short.MAX_VALUE)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(statusMessageLabel)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 204, Short.MAX_VALUE)
                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(statusAnimationLabel)
                .addContainerGap())
        );
        statusPanelLayout.setVerticalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(statusMessageLabel)
                    .addComponent(statusAnimationLabel)
                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(3, 3, 3))
        );

        setComponent(mainPanel);
        setMenuBar(menuBar);
        setStatusBar(statusPanel);
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextPane display;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton key0;
    private javax.swing.JButton key1;
    private javax.swing.JButton key2;
    private javax.swing.JButton key3;
    private javax.swing.JButton key4;
    private javax.swing.JButton key5;
    private javax.swing.JButton key6;
    private javax.swing.JButton key7;
    private javax.swing.JButton key8;
    private javax.swing.JButton key9;
    private javax.swing.JButton keyBack;
    private javax.swing.JButton keyC;
    private javax.swing.JButton keyCE;
    private javax.swing.JButton keyDiv;
    private javax.swing.JButton keyPlus;
    private javax.swing.JButton keyPoint;
    private javax.swing.JButton keyRest;
    private javax.swing.JButton keySame;
    private javax.swing.JButton keyX;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JRadioButton rBBinario;
    private javax.swing.JRadioButton rBDecimal;
    private javax.swing.JRadioButton rBHexadecimal;
    private javax.swing.JLabel statusAnimationLabel;
    private javax.swing.JLabel statusMessageLabel;
    private javax.swing.JPanel statusPanel;
    // End of variables declaration//GEN-END:variables

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;
}
